/*
 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 * Licensed Materials - Property of IBM
 * RMI-IIOP v1.0
 * Copyright IBM Corp. 1998 1999  All Rights Reserved
 *
 */

package com.sun.corba.se.impl.util;

import java.util.Dictionary;
import java.util.Enumeration;
import java.util.NoSuchElementException;

/**
 * A hashtable enumerator class.  This class should remain opaque
 * to the client. It will use the Enumeration interface.
 */
class IdentityHashtableEnumerator implements Enumeration {

  boolean keys;
  int index;
  IdentityHashtableEntry table[];
  IdentityHashtableEntry entry;

  IdentityHashtableEnumerator(IdentityHashtableEntry table[], boolean keys) {
    this.table = table;
    this.keys = keys;
    this.index = table.length;
  }

  public boolean hasMoreElements() {
    if (entry != null) {
      return true;
    }
    while (index-- > 0) {
      if ((entry = table[index]) != null) {
        return true;
      }
    }
    return false;
  }

  public Object nextElement() {
    if (entry == null) {
      while ((index-- > 0) && ((entry = table[index]) == null)) {
        ;
      }
    }
    if (entry != null) {
      IdentityHashtableEntry e = entry;
      entry = e.next;
      return keys ? e.key : e.value;
    }
    throw new NoSuchElementException("IdentityHashtableEnumerator");
  }
}
